/*
 * Copyright (c) 2006-2025, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2025-09-29     Guotong    first version
 */

#ifndef __KEY_H__
#define __KEY_H__

#include <rtthread.h>
#include "stm32f1xx_hal.h"

/* 按键相关定义 */
#define KEY_PORT                GPIOA
#define KEY_PIN                 GPIO_PIN_0
#define KEY_SHORT_PRESS_TIME    20      // 短按判断时间(ms)
#define KEY_LONG_PRESS_TIME     500     // 长按判断时间(ms)
#define KEY_DEBOUNCE_TIME       10      // 按键消抖时间(ms)

/* 按键回调函数类型定义 */
typedef void (*key_callback_t)(int type);

/* 按键事件类型 */
#define KEY_EVENT_SHORT_PRESS   0
#define KEY_EVENT_LONG_PRESS    1

/* 外部函数声明 */
void key_init(void);
void key_timer_init(void);
void key_register_callback(key_callback_t callback);

#endif /* __KEY_H__ */
